/*
* This file is a part of the open-eBackup project.
* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
* If a copy of the MPL was not distributed with this file, You can obtain one at
* http://mozilla.org/MPL/2.0/.
*
* Copyright (c) [2024] Huawei Technologies Co.,Ltd.
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
*/
#ifndef POSIXUTILS_H
#define POSIXUTILS_H

#include <string>
#include "Backup.h"
#include "log/BackupFailureRecorder.h"

namespace FS_Backup {
namespace PosixUtils {

    void RecurseCreateDirectory(const std::string path);
    
    int RecurseCreateDirectoryWithErr(const std::string& path);

    std::string GetParentDirName(const std::string path);

    SpecialFileType IsSpecialFile(uint32_t mode);

    std::string ParseErrorMessage(uint32_t errCode);
    
    std::string PathConcat(
        const std::string& forwardPath,
        const std::string& trailPath,
        const std::string& trimPrefixPath = "");

    std::string GetUnusedNewPath(const std::string& path);

    
};
}

#endif